iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0

今天我用GAS和試算表製作多國語言翻譯機:
程式碼如下:

function myFunction(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 如果 e 是 undefined(直接在編輯器執行),就用 A2 作為測試
  if (!e) {
    var testCell = sheet.getRange("A2");
    e = {
      range: testCell,
      value: testCell.getValue()
    };
  }

程式碼解析

這是一個 觸發器事件函數(通常用於 onEdit)
參數 e 代表 事件物件 (event object),包含被編輯的儲存格資訊(例如 range、value),可是如果直接在編輯器按「執行」,e 會是 undefined
但如果 e 是 undefined,就預設取 A2 儲存格作為測試,建立一個模擬事件物件 { range: ..., value: ... },讓下面程式可以正常運行。

  var col = e.range.getColumn();
  var row = e.range.getRow();

  // 只處理第一欄、從第2列開始的儲存格
  if (col === 1 && row >= 2 && e.value) {
    // 中文簡體
    var cn = LanguageApp.translate(e.value, 'zh-TW', 'zh-CN');
    var cnURL = '=HYPERLINK("http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q='
                + encodeURIComponent(cn) + '&tl=zh-CN","' + cn + '")';
    sheet.getRange(row, col + 1).setFormula(cnURL);

    // 英文
    var en = LanguageApp.translate(e.value, 'zh-TW', 'en');
    var enURL = '=HYPERLINK("http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q='
                + encodeURIComponent(en) + '&tl=en","' + en + '")';
    sheet.getRange(row, col + 2).setFormula(enURL);

    // 日文
    var ja = LanguageApp.translate(e.value, 'zh-TW', 'ja');
    var jaURL = '=HYPERLINK("http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q='
                + encodeURIComponent(ja) + '&tl=ja","' + ja + '")';
    sheet.getRange(row, col + 3).setFormula(jaURL);
  }
}

// 測試函數:直接在編輯器執行即可測試
function testMyFunction() {
  myFunction();
}

程式碼解析

LanguageApp.translate(e.value, 'zh-TW', 'zh-CN') → 將繁體中文翻成簡體中文
encodeURIComponent(cn) → 將文字轉成 URL 編碼,避免空格或符號造成 TTS URL 失敗
=HYPERLINK("…","cn") → 在 B 欄生成一個超連結,點擊就會播中文簡體語音
col + 1 → B 欄,其他翻譯也是。
https://ithelp.ithome.com.tw/upload/images/20250818/20169466gFwFqAB2El.png

心得

完成這個程式後,我覺得自己對 Google Apps Script 的理解更深入了。以前我只是知道可以操作試算表,現在才真正理解 getRange()、setFormula()、以及 LanguageApp.translate() 的運作方式,也明白了事件物件 e 在 onEdit 觸發器中的角色。寫程式的過程讓我學到,雖然語法看起來簡單,但實際應用中有很多細節需要注意,例如要避免覆蓋公式、要處理空值,以及 URL 中特殊字元要用 encodeURIComponent。


上一篇
D5 google apps script api
下一篇
D7自動發信系統
系列文
Google App Script雲端自動化與動態網頁實戰20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言